<?php namespace app\admin\controller;
use app\common\controller\AdminBase; 
use app\common\model\AuthRule;
use houdunwang\arr\Arr;
use think\db;
//权限控制器
class Rule extends AdminBase{
	private $db;
	public function _initialize(){
		parent::_initialize();
		$this->db=new AuthRule();
		
	}
//******************权限表****************************
	//权限列表
	public function rule_list(){
			$data=Arr::tree(db('auth_rule')->order('id')->select(),'title',$fieldPri = 'id', $fieldPid = 'pid');
//			halt($data);
//			$list=$data->paginate(10);
//			halt($list);
			$this->assign('data',$data);
			return $this->fetch();
		
	
	}
	//添加权限
	public function add_rule(){
		if(request()->isPost()){
			$res=$this->db->addData(input('post.'));
			if($res['valid']){
				$this->success($res['msg']);exit;
			}else{
				$this->error($res['msg']);exit;
			}
		}else{
			
				return $this->fetch();
		}
	
	}
	//添加子权限
	public function add_son_rule(){
	    if(request()->isPost()){
	    	$res=$this->db->addData(input('post.'));
			if($res['valid']){
				$this->success($res['msg'],'rule_list');exit;
			}else{
				$this->error($res['msg']);exit;
			}
	    }else{
	    	$id=input('id');
	    	if($id){
	    			    	
//			halt($id);
              $this->assign('id',$id);
	    	}

	    	return $this->fetch();
	    }
	}
	
	//编辑权限
	public function edit_rule(){
		 if(request()->isPost()){
		 	$res=$this->db->editData(input('post.'));
			if($res['valid']){
				$this->success($res['msg'],'rule_list');exit;
			}else{
				$this->error($res['msg']);exit;
			}
		 }else{
		 	$id=input('id');
//			halt($id);
			$data=db('auth_rule')->where('id',$id)->find();
//			halt($data);
            $this->assign('data',$data);
		  	return $this->fetch();
		 }
		
	}
	//删除权限
	public function delete_rule(){
		$id=input('id');
//		halt($id);
      //找子集
		$ids=$this->getSon(db('auth_rule')->select(),$id);
		if(empty($ids)){
			$num=db('auth_rule')->delete($id);
			//删除成功
			if($num){
				$this->success('权限删除成功!');
			}else{
				$this->error('权限删除失败!');
			}
		}else{
			$this->error('请先删除子集!');
		}
		return $this->fetch();
	}
	
	//递归寻找子类
	public function getSon($data,$id){
		$arr=[];
		
		if(!is_array($data)){
			return false;
		}
	
		foreach($data as $k=>$v){
//			   
			if($v['pid']==$id){
//				echo $v['id'];
//              把子类的id压入数组
                array_push($arr,$v['id']);
//              $arr[$k]=$v['id'];
//             var_dump($arr);
//             echo '</br>';
				$arr=array_merge($arr,$this->getSon($data,$v['id']));
				
			}
		}
//		//把自己压人
//		 $arr[]=$cid;
//		halt($arr);/
		return $arr;
	}
	//*******************用户组**********************
    /**
     * 用户组列表
     */
    
    public function group_list(){
    	$data=db('auth_group')->order('id ')->select();
//  	halt($data);
    	$this->assign('data',$data);
    	return $this->fetch();
    }
    //添加用户组
    public function add_group(){
    	if(request()->isPost()){
			$res=(new \app\common\model\AuthGroup)->addData(input('post.'));
			if($res['valid']){
				$this->success($res['msg']);exit;
			}else{
				$this->error($res['msg']);exit;
			}
		}else{
			
				return $this->fetch();
		}
    	
    }
    //修改用户组
    public function edit_group(){
  
    	if(request()->isPost()){
    		
    		$res=(new \app\common\model\AuthGroup)->editData(input('post.'));
//  		
			if($res['valid']){
				$this->success($res['msg'],'group_list');exit;
			}else{
				$this->error($res['msg'],'group_list');exit;
			}
    	}else{
    		$id=input('id');
    		$data=db('auth_group')->where('id',$id)->find();
//  		var_dump($data);
             $this->assign('data',$data);
    		return $this->fetch();
    	}
    	
    	
    }
    //删除用户组
    public function delete_group(){
    	$id=input('id');
    	halt($id);
    }
    
    //*****************权限-用户组*****************
    /**
     * 分配权限
     */
    public function rule_group(){
    	if(request()->isPost()){
    		
    	}else{
	    	$id=input('id');
	    	 // 获取用户组数据
	    	$group_data=db('auth_group')->where('id',$id)->find();
//	    	把字符串打散为数组：
	    	$group_data['rules']=explode(',',$group_data['rules']);
	    	
	    	// 获取规则数据
	    	$rule_data=(new \app\common\model\AuthRule)->getTreeData(input('level'));
	  	    var_dump($rule_data);
	    	return $this->fetch();
    	}
    	
    	
    }
    
    //******************用户-用户组*******************
    /**
     * 添加成员
     */
    public function check_user(){
    	
    }
    /**
     * 管理员列表
     */
   public function admin_user_list(){
	   	$data=(new \app\common\model\AuthGroupAccess())->getAllData();
//		halt($data);
//	        $list=db('users')->select();
//			halt($list);	
	      $this->assign('data',$data);
	   	  return $this->fetch();
   }
     /**
     * 添加管理员
     */
    public function add_admin(){
    	if(request()->isPost()){
    		$res=(new \app\common\model\Users())->addData(input('post.'));
    	
			if($res['valid']){
				$this->success($res['msg']);exit;
				
			}else{
				$this->error($res['msg']);exit;
			}
    	}else{
        		
			$auth_group=db('auth_group')->select();
//			halt($auth_group);
			$this->assign('data',$auth_group);
			return $this->fetch();
			
    	}
    }
}

